<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
</head>
<body>
<form method="post">
    <label>Text:</label>
    <textarea name="text"></textarea>
    <label>Word:</label>
    <input type="text" name="word" />
    <input type="submit" value="Extract" />
</form>
<?php
if (isset($_POST['text']) && isset($_POST['word'])) {
    //$pattern = '/[.?!]/';
    $text = strtolower($_POST['text']);
    //$sentences = preg_split($pattern, $text, 0, PREG_SPLIT_NO_EMPTY);
    //$word = " " . strtolower($_POST['word']) . " ";
    $word = strtolower($_POST['word']);
    $punctuationMarks = [".", "!", "?"];

    //foreach ($sentences as $sentence) {
    //    if (strpos($sentence, $word)) {
    //        echo $sentence;
    //    }
    //}

    $dotSentences = strstr($text, ".", true);
    $exclamationMarkSentences = strstr($text, "!", true);
    $questionMarkSentences = strstr($text, "?", true);

    // търсим последния символ, който е един от разделителите. от него до началото взимаме стринга и го сплитваме с трите реда по-горе, след което 3 foreach-a и echo изреченията, които съдържат въпросната дума, като прибавим в края и липсващия символ от сплитването.
    $positions = array();
    
    foreach ($punctuationMarks as $punctuationMark) {
        
        $pos = -1;
        
        while (($pos = strpos($text, $punctuationMark, $pos + 1)) !== false) {
            $positions[] = $pos;
        }
    }
    
    $highest = $positions[0];
    
    for ($i = 1; $i < sizeof($positions); $i++) {
        if ($positions[$i] > $highest) {
            $highest = $positions[$i];
        }
    }

    $text = strstr($text, $text[$highest], true);
}
?>
</body>
</html>